
from rest_framework.mixins import UpdateModelMixin
from rest_framework.viewsets import ReadOnlyModelViewSet
from meiduo_admin.paginators import MyPage
from meiduo_admin.serializers.orders_serializers import *

# 订单视图
class OrderView(UpdateModelMixin, ReadOnlyModelViewSet):

    queryset = OrderInfo.objects.all()
    serializer_class = OrderSimpleModelSerializer
    pagination_class = MyPage

    def get_queryset(self):
        keyword = self.request.query_params.get('keyword')
        if keyword:
            return self.queryset.filter(order_id__contains=keyword)
        return self.queryset.all()

    # self.list视图函数序列化返回列表数据应该使用OrderSimpleModelSerializer
    # self.retrieve视图函数序列化返回详情数据应该使用OrderDetailModelSerializer
    # 问题点：如何在一个视图集中，控制不同的视图函数，使用不同的序列化器来完成不同的数据序列化操作
    def get_serializer_class(self):
        # 问题点：如何判定此次处理请求的视图函数; 答：self.action是一个字符串，就是处理此次请求的视图函数名
        if self.action == "list":
            return OrderSimpleModelSerializer
        if self.action == "retrieve":
            return OrderDetailModelSerializer
        if self.action == 'partial_update':
            return OrderDetailModelSerializer

        return self.serializer_class









